package dbase;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import model.anggota;

/**
 *
 * @author aa
 */
public class DBanggota {
    Connection conn;

    public DBanggota(Connection conn){
        this.conn = conn;
    }

    public anggota getAnggota(int id) throws Exception {
        anggota anggota1 = null;
        String sql = "SELECT * FROM anggota WHERE id=?";
        PreparedStatement st = this.conn.prepareStatement(sql);
        st.setInt(1, id);
        ResultSet rs = st.executeQuery();
        if(rs.next()){
            anggota1 = new anggota();
            anggota1.setIdAnggota(rs.getInt(1));
            anggota1.setNama(rs.getString(2));
            anggota1.setStatusAnggota(rs.getString(3));
            anggota1.setTelepon(rs.getInt(4));
        }
        return anggota1;
    }

    public List<anggota> getAnggotaByCategory(int category) throws Exception {
        List<anggota> ang = new ArrayList<anggota>();
        String sql = "SELECT * FROM anggota WHERE category=?";
        PreparedStatement st = this.conn.prepareStatement(sql);
        st.setInt(1, category);
        ResultSet rs = st.executeQuery();
        while(rs.next()){
            anggota  anggotaData= new anggota();
            anggotaData.setIdAnggota(rs.getInt(1));
            anggotaData.setNama(rs.getString(2));
            anggotaData.setStatusAnggota(rs.getString(3));
            anggotaData.setTelepon(rs.getInt(4));
            ang.add(anggotaData);
        }
        return ang;
    }

    public List<anggota> getAllAnggota() throws Exception {
        List<anggota> ang = new ArrayList<anggota>();
        String sql = "SELECT * FROM anggota WHERE statusApprove='Belum'";
        PreparedStatement st = this.conn.prepareStatement(sql);
        ResultSet rs = st.executeQuery();
        while(rs.next()){
            anggota anggotaData = new anggota();
            anggotaData.setIdAnggota(rs.getInt(1));
            anggotaData.setNrp(rs.getString(2));
            anggotaData.setNama(rs.getString(3));
            anggotaData.setStatusAnggota(rs.getString(4));
            anggotaData.setAlamat(rs.getString(5));
            ang.add(anggotaData);
        }
        return ang;
    }
    public List<anggota> getAllAnggotaApprove() throws Exception {
        List<anggota> ang = new ArrayList<anggota>();
        String sql = "SELECT * FROM anggota WHERE statusApprove='Sudah'";
        PreparedStatement st = this.conn.prepareStatement(sql);
        ResultSet rs = st.executeQuery();
        while(rs.next()){
            anggota anggotaData = new anggota();
            anggotaData.setIdAnggota(rs.getInt(1));
            anggotaData.setNrp(rs.getString(2));
            anggotaData.setNama(rs.getString(3));
            anggotaData.setStatusAnggota(rs.getString(4));
            anggotaData.setAlamat(rs.getString(5));
            ang.add(anggotaData);
        }
        return ang;
    }
    public anggota getMaxIdAnggota() throws Exception {
        anggota anggota1 = null;
        String sql = "SELECT MAX(idAnggota) FROM anggota";
        PreparedStatement st = this.conn.prepareStatement(sql);
        ResultSet rs = st.executeQuery();
        if(rs.next()){
            anggota1 = new anggota();
            anggota1.setIdAnggota(rs.getInt(1));
        }
        return anggota1;
    }
    public void updateAnggota (String nama, String statusAnggota, String alamat, int telepon, String password) throws Exception {
        String sql = "UPDATE anggota set nama=?, statusAnggota=?, alamat=?, telepon=?, password=?" ;
        try {
            PreparedStatement st = conn.prepareStatement(sql);
            st.setString(1, nama);
            st.setString(2, statusAnggota);
            st.setString(3, alamat);
            st.setInt(4, telepon);
            st.setString(5, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void deleteAnggota (int nrp) {
        String sql = "DELETE FROM anggota where nrp = ? ";
        try {
            PreparedStatement st = this.conn.prepareStatement(sql);
            st.setInt(1,nrp);

            st.executeUpdate();
            st.close();
         } catch (Exception e) {
             e.printStackTrace();
         }
    }
}
